﻿Imports Logica

Public Class ConsultarMetas

    Private ucRegistrarMeta As RegistrarMeta
    Private ucModificarMeta As ModificarMeta
    Private ucBuscarUsuario As BuscarUsuario
    Private m_codigoEmpleado As String

    Private Sub ConsultarMetas_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim listaDatosEmpleado As Hashtable

        lblRetroalimentacion.Text = ""
        txtCodigoEmpleado.Text = m_codigoEmpleado
        txtCodigoEmpleado.ReadOnly = True

        listaDatosEmpleado = Gestor.usuarioBuscar(m_codigoEmpleado)
        txtNombre.Text = listaDatosEmpleado("nombre") & " " & listaDatosEmpleado("primerApellido") & " " & listaDatosEmpleado("segundoApellido")
        txtNombre.ReadOnly = True

        Dim datosUsuario As Hashtable

        datosUsuario = Gestor.usuarioActual()

        If Not Gestor.usuarioTienePermiso(datosUsuario("identificacion"), 22) Then
            btnAgregar.Enabled = False
        End If

        If Not Gestor.usuarioTienePermiso(datosUsuario("identificacion"), 23) Then
            btnModificar.Enabled = False
        End If

        If Not Gestor.usuarioTienePermiso(datosUsuario("identificacion"), 24) Then
            btnEliminar.Enabled = False
        End If

        If Not Gestor.usuarioTienePermiso(datosUsuario("identificacion"), 1) Then
            btnAsignarBonificacionMetas.Enabled = False
        End If
    End Sub


    ''' <summary>
    ''' Constructor Sobrecargado de la pantalla.
    ''' </summary>
    ''' <param name="p_codigoEmpleado">Codigo de Empleado.</param>
    ''' <remarks>Creado Por: Roberto Fiatt, Fecha: 18/06/2010, Modificado: 19/06/2010</remarks>
    Public Sub New(ByVal p_codigoEmpleado As String)

        ' This call is required by the Windows Form Designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.
        m_codigoEmpleado = p_codigoEmpleado
    End Sub
    ''' <summary>
    ''' Constructor vacion de la pantalla.
    ''' </summary>
    ''' <remarks>Creado Por: Roberto Fiatt, Fecha: 18/06/2010, Modificado: 19/06/2010</remarks>
    Public Sub New()

        ' This call is required by the Windows Form Designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.

    End Sub
    ''' <summary>
    ''' Accion al modificar el campo de Codigo Empleado, este ejecuta la busqueda de las metas.
    ''' </summary>
    ''' <remarks>Creado Por: Roberto Fiatt, Fecha: 18/06/2010, Modificado: 19/06/2010</remarks>
    Private Sub txtCodigoEmpleado_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtCodigoEmpleado.TextChanged
        lblRetroalimentacion.Text = ""

        Dim listaMetas As New List(Of Hashtable)
        Dim i As Integer = 0

        dgvConsultarMetas.Rows.Clear()
        Try
            listaMetas = Gestor.consultarMetas(txtCodigoEmpleado.Text)
        Catch sqlEx As SqlClient.SqlException
            lblRetroalimentacion.ForeColor = Color.Red
            lblRetroalimentacion.Text = "Error de conexión."
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try

        If Not listaMetas.Count() = 0 Then

            For Each meta As Hashtable In listaMetas
                Dim fechaReal As New Date(0)
                If Not meta("fechaReal") = fechaReal Then
                    dgvConsultarMetas.Rows.Insert(i, meta("codigoEmpleado"), meta("descripcion"), meta("fechaInicio"), meta("fechaEsperada"), meta("fechaReal"), meta("codigo"))
                    i = i + 1
                    lblRetroalimentacion.ForeColor = Color.Green
                    lblRetroalimentacion.Text = "Resultados encontrados"
                Else
                    dgvConsultarMetas.Rows.Insert(i, meta("codigoEmpleado"), meta("descripcion"), meta("fechaInicio"), meta("fechaEsperada"), "N/A", meta("codigo"))
                    i = i + 1
                    lblRetroalimentacion.ForeColor = Color.Green
                    lblRetroalimentacion.Text = "Resultados encontrados"
                End If

            Next
        Else
            lblRetroalimentacion.ForeColor = Color.Red
            lblRetroalimentacion.Text = "No hubo resultados en la búsqueda."
        End If

    End Sub
    ''' <summary>
    ''' Accion del boton de agregar meta.
    ''' </summary>
    ''' <remarks>Creado Por: Roberto Fiatt, Fecha: 18/06/2010, Modificado: 19/06/2010</remarks>
    Private Sub btnAgregar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAgregar.Click
        Dim usuario As Usuarios
        Dim ubicacion As New Point(152, 0)


        ucRegistrarMeta = New RegistrarMeta(txtCodigoEmpleado.Text)
        ucRegistrarMeta.Location = ubicacion
        usuario = Me.Parent
        usuario.Controls.Add(ucRegistrarMeta)
        usuario.mostrar(ucRegistrarMeta)




    End Sub
    ''' <summary>
    ''' Accion del boton de modificar meta.
    ''' </summary>
    ''' <remarks>Creado Por: Roberto Fiatt, Fecha: 18/06/2010, Modificado: 19/06/2010</remarks>
    Private Sub btnModificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnModificar.Click
        Dim usuario As Usuarios
        Dim ubicacion As New Point(152, 0)
        Dim codigo As Integer
        Dim descripcion As String
        Dim fechaInicio As Date
        Dim fechaEsperada As Date
        Dim fechaReal As String

        If dgvConsultarMetas.SelectedRows.Count > 0 Then
            lblRetroalimentacion.Text = ""
            codigo = dgvConsultarMetas.SelectedRows(0).Cells(5).Value
            descripcion = dgvConsultarMetas.SelectedRows(0).Cells(1).Value
            fechaInicio = dgvConsultarMetas.SelectedRows(0).Cells(2).Value
            fechaEsperada = dgvConsultarMetas.SelectedRows(0).Cells(3).Value
            fechaReal = dgvConsultarMetas.SelectedRows(0).Cells(4).Value

            If fechaReal = "N/A" Then
                fechaReal = New Date(0)
            End If

            ucModificarMeta = New ModificarMeta(codigo, txtCodigoEmpleado.Text, descripcion, fechaInicio, _
                                                fechaEsperada, fechaReal)
            ucModificarMeta.Location = ubicacion
            usuario = Me.Parent
            usuario.Controls.Add(ucModificarMeta)
            usuario.mostrar(ucModificarMeta)
        Else
            lblRetroalimentacion.ForeColor = Color.Red
            lblRetroalimentacion.Text = "Seleccione una fila."
            Exit Sub
        End If
        Me.Refresh()
    End Sub
    ''' <summary>
    ''' Accion del boton de eliminar meta.
    ''' </summary>
    ''' <remarks>Creado Por: Roberto Fiatt, Fecha: 18/06/2010, Modificado: 19/06/2010</remarks>
    Private Sub btnEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEliminar.Click
        Dim codigo As String

        Try
            codigo = dgvConsultarMetas.SelectedRows(0).Cells(5).Value
            Dim Box As MsgBoxResult = MsgBox("Esta seguro de que desea eliminar la meta?", MsgBoxStyle.YesNo)

            If Box = MsgBoxResult.Yes Then
                Try
                    Gestor.eliminarMeta(codigo)
                    lblRetroalimentacion.ForeColor = Color.Green
                    lblRetroalimentacion.Text = "Se ha eliminado con exito."
                    dgvConsultarMetas.SelectedRows(0).Visible = False
                Catch sqlEx As SqlClient.SqlException
                    lblRetroalimentacion.ForeColor = Color.Red
                    lblRetroalimentacion.Text = "Error de conexión."
                Catch ex As Exception
                    MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
                End Try
            Else
                Exit Sub
            End If
        Catch ex As Exception
            lblRetroalimentacion.ForeColor = Color.Red
            lblRetroalimentacion.Text = "Seleccione una fila."
        End Try
        Me.Refresh()
    End Sub

    ''' <summary>
    ''' Accion del boton de asignar bonificacion de metas.
    ''' </summary>
    ''' <remarks>Creado Por: Roberto Fiatt, Fecha: 22/06/2010</remarks>
    Private Sub btnAsignarBonificacionMetas_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAsignarBonificacionMetas.Click
        Dim asigBonificacion As New AsignarBonificacionMetas(txtCodigoEmpleado.Text)
        asigBonificacion.Show()
    End Sub

    Private Sub btnVolver_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVolver.Click
        Dim usuarios As Usuarios

        usuarios = Me.Parent
        usuarios.tvUsuarios.SelectedNode = Nothing
        usuarios.tvUsuarios.SelectedNode = usuarios.tvUsuarios.Nodes("ndBuscar")
    End Sub
End Class
